import {RouteRecordRaw} from "vue-router";

export namespace type {
    export class FileNode {
        file: File
        children: FileNode[] // 子文件
    }

    // 具体文件内容属性
    export class File {
        public fileId: number  // 文件id
        public fileName: string// 文件名
        public fileType: number// 文件类型
        public filePath: string// 文件路径,一般都是当前所在目录
        public updateTime: string// 更新时间
        public fileSize: number // 文件大小
    }

    // 动态路由缓存类型
    export class RouterCache {
        root: string
        obj: RouteRecordRaw
    }

    export class Tool {
        id: number
        // 工具图标
        icon: string
        // 工具栏打开标识符
        isOpen: boolean
        // 需要展示的组件名称
        component: string
        // 工具基础路径（基础路径由用户id前缀凭借而成） basePath 不能重复
        basePath: string
        name: string
        path: string
        // 提示语
        tip: string
        // 工具栏对应的 状态管理器
        msgFun: Function
    }

    export interface User {
        id?:number
        name?: string
        account?: string
        email?: string
        phone?: string
        gender?: string
        birth?: string
        picture?: string // 头像
        creatTime?: string
        orgId?: number  // 用户默认组织
        roleId?: number // 用户默认组织对应角色
        role?: string
    }

    export class Token {
        token: string   // 生份认证
        user: User      // 用户信息
        orgs: any       // 所属组织
        roles: any      // 组织角色
        org: number     //当前操作组织
        role: number    //当前操作角色
        orgRole: any    //当前组织操作可选角色
    }

    export class WindowLabel {
        public path: string
        public title: string
        public windowType: number
        public check: boolean

        constructor(path: string, title: string, type: number, check: boolean) {
            this.path = path
            this.title = title
            this.windowType = type
            this.check = check
        }
    }

    export class NotifyMessage {
        public type: string
        public title: string
        public dangerouslyUseHTMLString: boolean
        public message: string
        public position: string
    }

    export class Account {
        id: number
        account: string
        email: string
        phone: string
        password: string
        name: string
        gender: string
        birth: string
        picture: string
        creat_time: string
        update_time: string
        role_id: number
        status: number
    }

}